home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / brutil.arc / FDUMP.ASM < prev    next >
Encoding:
Assembly Source File  |  1988-02-25  |  8.9 KB  |  645 lines

  1.     IF1
  2.     INCLUDE MACRO.LIB
  3.     ENDIF
  4. M    EQU    BYTE PTR 0[BX]
  5. CODE    SEGMENT    PARA PUBLIC
  6.     ASSUME    CS:CODE,DS:CODE,ES:CODE
  7.     ORG    100H
  8. START    PROC    NEAR
  9.     JMP    START1
  10. DCADR    DW    DUMPX
  11. START1: MVC    MYFCB,12,5CH
  12.     MVC    OPTTBL,11,6DH
  13.     MOV    AL,'O'
  14.     CALL    CHKOPT
  15.     MOV    BX,OFFSET (DUMPO)
  16.     JZ    SETIT
  17.     MOV    AL,'S'
  18.     CALL    CHKOPT
  19.     MOV    BX,OFFSET (DUMPS)
  20.     JZ    SETIT
  21.     MOV    AL,'B'
  22.     CALL    CHKOPT
  23.     MOV    BX,OFFSET (DUMPB)
  24.     JZ    SETIT
  25.     MOV    BX,OFFSET (DUMPX)
  26. SETIT:    MOV    DCADR,BX
  27.     MOV    AL,'F'
  28.     CALL    CHKOPT
  29.     JZ    FFIND
  30.     MOV    AL,'G'
  31.     CALL    CHKOPT
  32.     JZ    GFIND
  33.     JMP    ALLSET
  34. GFIND:    MOV    DX,OFFSET (GCMSG)
  35.     MOV    AL,'C'
  36.     CALL    CHKOPT
  37.     JNZ    L_1
  38.     JMP    FGCCOM
  39. L_1:
  40.     MOV    DX,OFFSET (GOMSG)
  41.     MOV    AL,'O'
  42.     CALL    CHKOPT
  43.     JZ    FGOCOM
  44.     MOV    AL,'S'
  45.     CALL    CHKOPT
  46.     JZ    FGOCOM
  47.     MOV    DX,OFFSET (GBMSG)
  48.     MOV    AL,'B'
  49.     CALL    CHKOPT
  50.     JZ    FGBCOM
  51.     MOV    DX,OFFSET (GHMSG)
  52.     JMP    SHORT FGHCOM
  53. FFIND:    MOV    DX,OFFSET (FCMSG)
  54.     MOV    AL,'C'
  55.     CALL    CHKOPT
  56.     JZ    FGCCOM
  57.     MOV    DX,OFFSET (FOMSG)
  58.     MOV    AL,'O'
  59.     CALL    CHKOPT
  60.     JZ    FGOCOM
  61.     MOV    AL,'S'
  62.     CALL    CHKOPT
  63.     JZ    FGOCOM
  64.     MOV    DX,OFFSET (FBMSG)
  65.     MOV    AL,'B'
  66.     CALL    CHKOPT
  67.     JZ    FGBCOM
  68.     MOV    DX,OFFSET (FHMSG)
  69. FGHCOM:    MOV    AL,16
  70.     JMP    SHORT FGHOCM
  71. FGBCOM:    MOV    AL,2
  72.     JMP    SHORT FGHOCM
  73. FGOCOM:    MOV    AL,8
  74. FGHOCM:    MOV    BYTE PTR CVBASE,AL
  75.     CALL    GETDTA
  76.     MOV    BX,OFFSET (82H)
  77.     SUB    AL,AL
  78.     MOV    BYTE PTR SORTWK,AL
  79. FGHOLP:    MOV    CL,0
  80. CVBASE     EQU    $-1
  81.     ASGP    ,,,' ',MSC047
  82.     JNC    L_2
  83.     JMP    BADVAL
  84. L_2:
  85.     MOV    AL,DH
  86.     OR    AL,AL
  87.     JZ    L_3
  88.     JMP    BADVAL
  89. L_3:
  90.     PUSH    BX
  91.     MOV    BX,OFFSET (SORTWK)
  92.     INC    M
  93.     MOV    AL,M
  94.     DADA
  95.     MOV    M,DL
  96.     POP    BX
  97.     MOV    AL,M
  98.     INC    BX
  99.     OR    AL,AL
  100.     JNZ    FGHOLP
  101.     JMP    SHORT FGCOM
  102. FGCCOM:    CALL    GETDTA
  103.     MOV    BX,OFFSET (81H)
  104.     MOV    CH,M
  105.     INC    CH
  106.     MVC    SORTWK
  107. FGCOM:    MOV    WORD PTR CSCRLF,09090H
  108. ALLSET: OPENI    MYFCB-7,NOFILE
  109.     MOV    DX,OFFSET (0)
  110.     SUB    AL,AL
  111.     STAM    BUFCT,MYFCB+35
  112.     MOV    BX,OFFSET (-1)
  113.     MOV    WORD PTR MYFCB+33,BX
  114. LOOP:    PUSH    DX
  115.     DOS    20,MYFCB-7
  116.     POP    DX
  117.     CMP    AL,1
  118.     JZ    GOTEOF
  119.     MOV    BX,WORD PTR MYFCB+33
  120.     INC    BX
  121.     MOV    WORD PTR MYFCB+33,BX
  122.     MOV    AL,'G'
  123.     CALL    CHKOPT
  124.     MOV    BX,OFFSET (80H)
  125.     JZ    GL1
  126.     MOV    AL,'F'
  127.     CALL    CHKOPT
  128.     MOV    BX,OFFSET (80H)
  129.     JNZ    NOFL1
  130.     JMP    FL1
  131. NOFL1:    MOV    CH,BH
  132.     MOV    CL,BL
  133.     MOV    AL,BYTE PTR MYFCB+34
  134.     OR    AL,AL
  135.     RCR    AL,1
  136. DMPCAL: CALL    DCADR
  137.     MOV    AL,'P'
  138.     CALL    CHKOPT
  139.     JNZ    LOOP
  140.     PUSH    DX
  141.     DOS    7
  142.     POP    DX
  143.     CMP    AL,3
  144.     JZ    GOTEOF
  145.     JMP    LOOP
  146. NOFILE: CALL    ABTPGM
  147.     DB    'No input file$'
  148. ABTPGM: POP    DX
  149.     DOS    9
  150. GOTEOF: INT    20H
  151. BADVAL: CALL    ABTPGM
  152.     DB    'Bad numeric value$'
  153. GL1:    MOV    AL,M
  154.     PUSH    BX
  155.     CALL    GLCHK
  156.     POP    BX
  157.     JC    GL2
  158.     MOV    CX,OFFSET (1)
  159.     PUSHM    BX,DX
  160.     MOV    AL,BYTE PTR MYFCB+34
  161.     OR    AL,AL
  162.     RCR    AL,1
  163.     CALL    DCADR
  164.     POPM    DX,BX
  165. GL2:    INC    DX
  166.     INC    BL
  167.     JNZ    GL1
  168.     JMP    LOOP
  169. GLCHK:    MOV    BX,OFFSET (SORTWK)
  170.     MOV    CH,M
  171.     INC    CH
  172. GLC1:    INC    BX
  173.     DEC    CH
  174.     STC
  175.     JNZ    L_4
  176.     RET
  177. L_4:
  178.     CMP    AL,M
  179.     JNZ    L_5
  180.     RET
  181. L_5:
  182.     JMP    SHORT GLC1
  183. FL1:    PUSH    BX
  184.     MOV    AL,BYTE PTR BUFCT
  185.     OR    AL,AL
  186.     MOV    AL,M
  187.     JNZ    FL1A
  188.     MOV    BX,WORD PTR MYFCB+33
  189.     MOV    WORD PTR SVRCD,BX
  190. FL1A:    PUSH    DX
  191.     CALL    FLCHK
  192.     JC    FL2
  193.     JNZ    FL3
  194.     POP    DX
  195.     MOV    BX,OFFSET (SORTWK)
  196.     MOV    CL,M
  197.     INC    BX
  198.     MOV    CH,0
  199.     PUSH    DX
  200.     MOV    AL,BYTE PTR SVRCD+1
  201.     OR    AL,AL
  202.     RCR    AL,1
  203.     CALL    DCADR
  204. FL2:    MOV    DX,OFFSET (0)
  205. SVRCD     EQU    $-2
  206.     MOV    BX,WORD PTR MYFCB+33
  207.     CDEHL
  208.     XCHG    BX,DX
  209.     JZ    FL2A
  210.     MOV    WORD PTR MYFCB+33,BX
  211.     MOV    AL,0
  212.     DOS    33,MYFCB-7
  213.     OR    AL,AL
  214.     JZ    L_6
  215.     JMP    GOTEOF
  216. L_6:
  217.     DOS    20,MYFCB-7
  218. FL2A:    POPM    DX,BX
  219.     MOV    AL,DL
  220.     AND    AL,7FH
  221.     OR    AL,80H
  222.     MOV    BL,AL
  223.     MOV    BH,0
  224.     INC    DX
  225.     PUSHM    BX,DX
  226. FL3:    POPM    DX,BX
  227.     INC    BL
  228.     JNZ    FL1
  229.     JMP    LOOP
  230. FLCHK:    MOV    BX,OFFSET (BUFCT)
  231.     MOV    CL,M
  232.     MOV    BX,OFFSET (SORTWK+1)
  233.     MOV    CH,0
  234.     ADD    BX,CX
  235.     CMP    AL,M
  236.     MOV    BX,OFFSET (BUFCT)
  237.     STC
  238.     JNZ    FLC1
  239.     MOV    AL,BYTE PTR SORTWK
  240.     INC    M
  241.     CMP    AL,M
  242.     JZ    L_7
  243.     RET
  244. L_7:
  245. FLC1:    MOV    M,0
  246.     RET
  247. BUFCT     DB    1 DUP (?)
  248. GETDTA: DOS    9
  249.     MOV    BX,OFFSET (125)
  250.     MOV    WORD PTR DS:80H,BX
  251.     DOS    10,80H
  252.     CALL    SCRLF
  253.     MOV    BX,OFFSET (81H)
  254.     MOV    AL,M
  255.     DADA
  256.     INC    BX
  257.     MOV    M,0
  258.     RET
  259. GHMSG     DB    'Enter hex values for global find',13,10,'*$'
  260. GCMSG     DB    'Enter characters for global find',13,10,'*$'
  261. GOMSG     DB    'Enter octal values for global find',13,10,'*$'
  262. FHMSG     DB    'Enter hex values for string search',13,10,'*$'
  263. FCMSG     DB    'Enter characters for string search',13,10,'*$'
  264. FOMSG     DB    'Enter octal values for string search',13,10,'*$'
  265. GBMSG     DB    'Enter binary values for global find',13,10,'*$'
  266. FBMSG     DB    'Enter binary values for string search',13,10,'*$'
  267. CHKOPT:    MOV    BX,OFFSET (OPTTBL)
  268. CO1:    CMP    AL,M
  269.     JNZ    L_8
  270.     RET
  271. L_8:
  272.     LAHF
  273.     XCHG    AL,AH
  274.     PUSH    AX
  275.     XCHG    AL,AH
  276.     MOV    AL,M
  277.     CMP    AL,' '
  278.     JZ    CO2
  279.     OR    AL,AL
  280.     JZ    CO2
  281.     POP    AX
  282.     XCHG    AL,AH
  283.     SAHF
  284.     INC    BX
  285.     JMP    SHORT CO1
  286. CO2:    POP    AX
  287.     XCHG    AL,AH
  288.     SAHF
  289.     RET
  290. OPTTBL     DB    11 DUP (?)
  291.     DB    0
  292. DUMPX:    MOV    BYTE PTR HEXHB,AL
  293.     CALL    DSPXAD
  294.     PUSHM    BX,DX,CX
  295.     CALL    DSPHEX
  296.     POPM    CX,DX,BX
  297.     CALLM    DSPCHR,SCRLF
  298.     OR    CX,CX
  299.     MOV    AL,0
  300. HEXHB     EQU    $-1
  301.     JNZ    DUMPX
  302.     RET
  303. DSPXAD: PUSHM    DX,BX
  304.     MOV    DL,DH
  305.     MOV    DH,AL
  306.     MOV    AL,'R'
  307.     CALL    CHKOPT
  308.     POP    BX
  309.     JNZ    DXA1
  310.     INC    DX
  311. DXA1:    MOV    AL,DH
  312.     CALL    HEXBYT
  313.     MOV    AL,DL
  314.     CALL    HEXBYT
  315.     POP    DX
  316.     MOV    AL,DL
  317.     CALL    HEXBYT
  318. SBLANK:    MOV    AL,' '
  319. SCHAR:    PUSHM    BX,DX,CX
  320.     MOV    DL,AL
  321.     DOS    2
  322.     POPM    CX,DX,BX
  323.     RET
  324. DSPHEX:    MOV    AL,M
  325.     CALL    HEXBYT
  326.     INCM    BX,DX
  327.     DEC    CX
  328.     CALL    SBLANK
  329.     MOV    AL,DL
  330.     AND    AL,0FH
  331.     CALL    CSCRLF
  332.     OR    CX,CX
  333.     JNZ    DSPHEX
  334.     RET
  335. DSPCHR:    PUSH    BX
  336.     MOV    AL,'M'
  337.     CALL    CHKOPT
  338.     POP    BX
  339.     MOV    AL,M
  340.     JNZ    DC0
  341.     AND    AL,7FH
  342. DC0:    TWR    20H,7FH
  343.     JNC    DC1
  344.     MOV    AL,'.'
  345. DC1:    CALL    SCHAR
  346.     INCM    BX,DX
  347.     DEC    CX
  348.     MOV    AL,DL
  349.     AND    AL,0FH
  350.     CALL    CSCRLF
  351.     OR    CX,CX
  352.     JNZ    DSPCHR
  353.     RET
  354. CSCRLF:    JZ    L_9
  355.     RET
  356. L_9:
  357.     MOV    BP,SP
  358.     XCHG    BX,[BP]
  359.     POP    BX
  360.     RET
  361. SCRLF:    MOV    AL,13
  362.     CALL    SCHAR
  363.     MOV    AL,10
  364.     JMP    SHORT SCHAR
  365. HEXBYT:    PUSH    AX
  366.     RLM    4
  367.     CALL    HB1
  368.     POP    AX
  369. HB1:    AND    AL,0FH
  370. DSPDIG:    ADD    AL,90H
  371.     DAA
  372.     ADC    AL,40H
  373.     DAA
  374.     JMP    SCHAR
  375. DUMPB:    MOV    BYTE PTR BINHB,AL
  376.     CALLM    DSPXAD,DSPBIN,SCRLF
  377.     OR    CX,CX
  378.     MOV    AL,0
  379. BINHB     EQU    $-1
  380.     JNZ    DUMPB
  381.     RET
  382. DSPBIN:    MOV    AL,M
  383.     PUSH    CX
  384.     MOV    CL,8
  385. DSPB1:    ROL    AL,1
  386.     MOV    CH,AL
  387.     AND    AL,1
  388.     CALL    DSPDIG
  389.     DEC    CL
  390.     MOV    AL,CH
  391.     JNZ    DSPB1
  392.     POP    CX
  393.     INCM    BX,DX
  394.     DEC    CX
  395.     MOV    AL,DL
  396.     AND    AL,7
  397.     CALL    CSCRLF
  398.     OR    CX,CX
  399.     JNZ    L_10
  400.     RET
  401. L_10:
  402.     CALL    SBLANK
  403.     JMP    SHORT DSPBIN
  404. DUMPS:    MOV    BYTE PTR OCTHB,AL
  405.     CALLM    DSPSAD,DSPOCT,SCRLF
  406.     OR    CX,CX
  407.     MOV    AL,0
  408. OCTHB     EQU    $-1
  409.     JNZ    DUMPS
  410.     RET
  411. DSPSAD: PUSHM    DX,BX
  412.     MOV    DL,DH
  413.     MOV    DH,AL
  414.     MOV    AL,'R'
  415.     CALL    CHKOPT
  416.     POP    BX
  417.     JNZ    DSA1
  418.     INC    DX
  419. DSA1:    MOV    AL,DH
  420.     CALL    OCTBYT
  421.     MOV    AL,DL
  422.     CALL    OCTBYT
  423.     POP    DX
  424.     MOV    AL,DL
  425.     CALL    OCTBYT
  426.     JMP    SBLANK
  427. DSPOCT:    MOV    AL,M
  428.     CALL    OCTBYT
  429.     INCM    BX,DX
  430.     DEC    CX
  431.     MOV    AL,DL
  432.     AND    AL,0FH
  433.     CALL    CSCRLF
  434.     OR    CX,CX
  435.     JNZ    L_11
  436.     RET
  437. L_11:
  438.     CALL    SBLANK
  439.     JMP    SHORT DSPOCT
  440. OCTBYT: PUSHM    AX,AX
  441.     RLM    2
  442.     AND    AL,3
  443.     CALL    DSPDIG
  444.     POP    AX
  445.     RRM    3
  446.     CALL    OB1
  447.     POP    AX
  448. OB1:    AND    AL,7
  449.     JMP    DSPDIG
  450. DUMPO:    MOV    BYTE PTR OCTHB,AL
  451.     CALLM    DSPOAD,DSPOCT,SCRLF
  452.     OR    CX,CX
  453.     MOV    AL,BYTE PTR OCTHB
  454.     JNZ    DUMPO
  455.     RET
  456. DSPOAD: PUSHM    BX,DX,CX
  457.     MOV    DL,DH
  458.     MOV    DH,AL
  459.     MOV    AL,'R'
  460.     CALL    CHKOPT
  461.     JNZ    DOA1
  462.     INC    DX
  463. DOA1:    MOV    BH,DL
  464.     MOV    BL,DH
  465.     MOV    WORD PTR OCTBUF+1,BX
  466.     POPM    CX,DX
  467.     PUSHM    DX,CX
  468.     MOV    AL,DL
  469.     MOV    BYTE PTR OCTBUF+3,AL
  470.     MOV    CL,8
  471. DOALP1:    SUB    AL,AL
  472.     MOV    BYTE PTR OCTBUF,AL
  473.     MOV    CH,3
  474. DOALP2:    PUSH    CX
  475.     SHFTL    OCTBUF,4
  476.     POP    CX
  477.     DEC    CH
  478.     JNZ    DOALP2
  479.     MOV    AL,BYTE PTR OCTBUF
  480.     CALL    DSPDIG
  481.     DEC    CL
  482.     JNZ    DOALP1
  483.     POPM    CX,DX,BX
  484.     JMP    SBLANK
  485.     DB    0FFH,0,0,0,0,0,1FH
  486. MYFCB    DB    37 DUP(?)
  487. OCTBUF     DB    4 DUP (?)
  488. SYS031: MOV    AH,15
  489.     PUSH    DX
  490.     MOV    BX,19
  491.     ADD    BX,DX
  492.     XCHG    BX,DX
  493.     FILL    ,4,0
  494.     XCHG    BX,DX
  495.     DOS
  496.     POP    DX
  497.     MOV    BX,39
  498.     ADD    BX,DX
  499.     MOV    M,0
  500.     INC    AL
  501.     STC
  502.     JNZ    L_12
  503.     RET
  504. L_12:
  505.     OR    AL,AL
  506.     RET
  507. MSC011:    MOV    BP,SP
  508.     XCHG    BX,[BP]
  509.     MOV    AL,M
  510.     INC    BX
  511.     MOV    CH,M
  512.     INC    BX
  513.     XCHG    BX,[BP]
  514. MSC012:    MOV    SI,DX
  515.     MOV    [SI],AL
  516.     INC    DX
  517.     DEC    CH
  518.     JNZ    MSC012
  519.     RET
  520. MSC022:    MOV    AL,M
  521.     MOV    SI,DX
  522.     MOV    [SI],AL
  523.     INC    BX
  524.     INC    DX
  525.     DEC    CH
  526.     JNZ    MSC022
  527.     RET
  528. MSC045:    MOV    AL,M
  529.     INC    BX
  530.     CMP    AL,58
  531.     JNC    L_14
  532.     JMP    GL_043
  533. L_14:
  534.     CALL    MSC102
  535.     SUB    AL,7
  536. GL_043: SUB    AL,48
  537.     CMP    AL,DL
  538.     CMC
  539.     RET
  540. MSC047:    MOV    AL,M
  541.     CMP    AL,CH
  542.     JNZ    GL_04A
  543.     INC    BX
  544.     JMP    SHORT MSC047
  545. GL_04A: PUSH    BX
  546.     MOV    BX,OFFSET (0)
  547. GL_045: MOV    BP,SP
  548.     XCHG    BX,[BP]
  549.     MOV    DL,CL
  550.     CALL    MSC045
  551.     JC    MSC472
  552.     XCHG    BX,[BP]
  553.     LAHF
  554.     XCHG    AL,AH
  555.     PUSH    AX
  556.     XCHG    AL,AH
  557.     ADD    BX,BX
  558.     JC    MSC473
  559.     MOV    AL,CL
  560.     CMP    AL,2
  561.     JZ    MSC474
  562.     MOV    DX,BX
  563.     ADD    BX,BX
  564.     JC    MSC473
  565.     ADD    BX,BX
  566.     JC    MSC473
  567.     CMP    AL,8
  568.     JZ    MSC474
  569.     CMP    AL,10
  570.     JZ    GL_04B
  571.     MOV    DX,BX
  572. GL_04B: ADD    BX,DX
  573.     JC    MSC473
  574. MSC474:    POP    AX
  575.     XCHG    AL,AH
  576.     SAHF
  577.     CALL    MSC212
  578.     JC    MSC475
  579.     JMP    SHORT GL_045
  580. MSC472:    DEC    BX
  581.     POP    DX
  582.     SUB    AL,AL
  583.     MOV    AL,M
  584.     RET
  585. MSC473:    POP    AX
  586.     XCHG    AL,AH
  587.     SAHF
  588.     STC
  589. MSC475:    POP    BX
  590.     MOV    DX,OFFSET (0)
  591.     RET
  592. MSC081:    XCHG    BX,DX
  593.     MOV    CH,0
  594.     ADD    BX,CX
  595.     XCHG    BX,DX
  596.     OR    AL,AL
  597. GL_081: DEC    DX
  598.     MOV    SI,DX
  599.     MOV    AL,[SI]
  600.     RCL    AL,1
  601.     MOV    SI,DX
  602.     MOV    [SI],AL
  603.     DEC    CL
  604.     JNZ    GL_081
  605.     RET
  606. MSC102:    CMP    AL,61H
  607.     JNC    L_19
  608.     RET
  609. L_19:
  610.     CMP    AL,7BH
  611.     JC    L_20
  612.     RET
  613. L_20:
  614.     SUB    AL,20H
  615.     RET
  616. MSC11:    MOV    BP,SP
  617.     XCHG    BX,[BP]
  618.     CMP    AL,M
  619.     LAHF
  620.     INC    BX
  621.     SAHF
  622.     JC    GL_111
  623.     CMP    AL,M
  624.     CMC
  625. GL_111: LAHF
  626.     INC    BX
  627.     XCHG    BX,[BP]
  628.     RET
  629. MSC212:    PUSH    DX
  630.     MOV    DL,AL
  631.     MOV    DH,0
  632.     ADD    BX,DX
  633.     POP    DX
  634.     RET
  635. SORTWK     EQU    $
  636. START    ENDP
  637. CODE    ENDS
  638.     END    START
  639. P]
  640.     RET
  641. MSC212:    PUSH    DX
  642.     MOV    DL,AL
  643.     MOV    DH,0
  644.     ADD    BX,DX
  645.     POP